<?php
/**
 * Класс управления категорией
 * @author Bagdad
 * @name Category
 * @category Categories
 * @version 1.0
 * @package Shop-Solution
 */
class Category extends DBObject {
	
/**
 * Переменная идентификатор категории
 * @var int
 */
	var $categoryID;
	var $parent;
	var $products_count;
	var $picture;
	var $products_count_admin;
	var $sort_order;
	var $viewed_times;
	var $allow_products_comparison;
	var $allow_products_search;
	var $show_subcategories_products;
	
/**
 * Переменная отвечающая будет ли товар в категории отображаться как подкатегория
 * @var integer
 * @param 1 - Будет отображаться как подкатегории в блоке категорий
 * @param 0 - Не будет, соответственно
 */
	var $show_product_as_subcategory;
/**
 * Переменная отвечающая будет ли категория отображаться на главной
 * @var integer
 * @param 1 - Будет показано на главной
 * @param 0 - Будет показано только в блоке категорий
 */
	var $show_in_main_page;
/**
 * Переменная отвечающая за количество товара, который будет показан в каждой строке при просмотре категории
 * @var integer
 */	
	var $show_product_per_line;
/**
 * Как именно будет показана категория
 * @var string
 * @param "Classic" - Как обычно, плиткой
 * @param "List" - Простым списком
 * @param "G-List" - Списком с группировкой
 */
	var $show_products_style;

/**
 * Какие столбцы показывать в списке продуктов
 * Значение соответствуют extra параметрам товара. Запись через запятую, порядок вывода как в списке.
 * @var string
 */
	var $show_product_extra;
	
	var $name;
	var $description;
	var $meta_title;
	var $meta_description;
	var $meta_keywords;
	var $slug;
	var $vkontakte_type;
	var $id_1c;
	
	var $__db_table = CATEGORIES_TABLE;
	var $__primary_key = 'categoryID';
	
	function __isAvailableSlug($slug){
		
		return !intval(db_phquery_fetch(DBRFETCH_FIRST, 'SELECT 1 FROM ?#CATEGORIES_TABLE WHERE slug=? AND categoryID<>?', $slug, $this->categoryID));
	}
	
	function checkInfo($scheme = null){

		if($this->slug && !$this->__isAvailableSlug($this->slug))
			return PEAR::raiseError('msg_occupied_slug');
	}
		
	function loadBySlug($slug){
		if($this->getRegisteredByID($slug)) return;
		$category = db_phquery_fetch(DBRFETCH_ASSOC, 'SELECT * FROM ?#CATEGORIES_TABLE WHERE slug=?', $slug);
		LanguagesManager::ml_fillFields($this->__db_table, $category);
		$this->loadFromArray($category);
	}
	
	function loadByID($id){
		$res = parent::loadByID($id);
		if($res){
			$this->registerByID($this->slug);
		}
		return $res;
	}
}
?>